package com.tensquare.filter;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.exception.ZuulException;
import org.springframework.stereotype.Component;

/**
 * @Auther: 高源
 * @Time:2020/5/1 21:04
 * @Description: 后台zuul过滤器
 * @version:1.0
 */

@Component
public class ManagerFilter extends ZuulFilter {

    /**
     * 过滤器类型，在zuul中定义了四种不同生命周期的过滤器类型
     * pre：在请求路由前被调用
     * route：路由请求时被调用
     * post：在route和error之后被调用
     * error：处理请求发生错误时被调用
     * @return
     */
    @Override
    public String filterType() {
        return "pre";
    }

    /**
     * 通过int值来定义过滤器的执行顺序，值越小，优先级越高
     * @return
     */
    @Override
    public int filterOrder() {
        return 0;
    }

    /**
     * 实现过滤器的开关
     * @return
     */
    @Override
    public boolean shouldFilter() {
        return true;
    }

    /**
     * 过滤器的具体逻辑
     * @return
     * @throws ZuulException
     */
    @Override
    public Object run() throws ZuulException {
        System.out.println("后台过滤器已执行。。。");
        return null;
    }
}
